// 引入网络请求工具类
import http from '../../../utils/https.js'

// 注意：当前使用模拟支付模式进行前端测试
// 将 useMockPayment 设置为 false 即可使用真实接口
// 需要确保后端接口已准备好：
// - 月卡支付状态更新：PUT /monthlyCard/updatePaymentStatus
// - 停车缴费状态更新：PUT /parkingPay/parkingPay

Page({
  data: {
    amount: '0.00', // 支付金额（由上个页面传递）
    billId: '',     // 账单ID（从物业账单详情传递）
    payWay: '余额', // 当前支付方式
    passwordArr: [] // 已输入密码（存储●）
  },
  
  onLoad: function(options) {
    let incomingAmount = '0.00';

    if (options && options.amount) incomingAmount = options.amount;
    if (options && options.billId) this.setData({ billId: options.billId });

    // 事件通道（备用）
    try {
      const eventChannel = this.getOpenerEventChannel && this.getOpenerEventChannel();
      if (eventChannel) {
        eventChannel.on && eventChannel.on('payAmount', data => {
          if (data && data.amount) {
            incomingAmount = data.amount;
            this.setData({ amount: this.formatAmount(incomingAmount) });
          }
        });
      }
    } catch (e) {}

    if (!incomingAmount || isNaN(Number(incomingAmount))) {
      const cached = wx.getStorageSync('lastPayAmount');
      if (cached) incomingAmount = cached;
    }

    this.setData({ amount: this.formatAmount(incomingAmount) });
    wx.setStorageSync('lastPayAmount', this.data.amount);

    const orderData = wx.getStorageSync('currentParkingOrder');
    if (orderData) {
      console.log('当前缴费订单信息:', orderData);
    }
  },

  // 金额格式化
  formatAmount(val) {
    const n = Number(val || 0);
    return n.toFixed(2);
  },

  // 输入密码
  onInput(e) {
    const key = e.currentTarget.dataset.key;
    if (this.data.passwordArr.length < 6) {
      this.setData({
        [`passwordArr[${this.data.passwordArr.length}]`]: '●'
      });
      if (this.data.passwordArr.length === 6) {
        console.log('密码输入完成：', this.data.passwordArr.join(''));
      }
    }
  },
  onPay() {
    wx.showLoading({ title: '支付中...' });
    const orderData = wx.getStorageSync('currentParkingOrder');

    const onLocalSuccess = () => {
      wx.hideLoading();
      wx.showToast({ title: '支付成功' });
      wx.setStorageSync('paymentSuccess', true);
      // 标记缴费列表需要刷新
      wx.setStorageSync('shouldRefreshPaymentList', true);
      wx.redirectTo({ url: `/service/pages/successpay/successpay?amount=${this.data.amount}` });
    };

    // 如果有 billId，优先更新物业账单状态
    if (this.data.billId) {
      this.updateBillStatus(this.data.billId)
        .then(onLocalSuccess)
        .catch(err => {
          console.error('更新账单状态失败，继续本地成功流程:', err);
          onLocalSuccess();
        });
      return;
    }

    // 否则按原订单逻辑
    if (!orderData) {
      onLocalSuccess();
      return;
    }

    this.updatePaymentStatus(orderData.id)
      .then(onLocalSuccess)
      .catch(err => {
        wx.hideLoading();
        console.error('支付失败:', err);
        wx.showToast({ title: '支付失败，请重试', icon: 'none' });
      });
  },

  // 调用接口修改物业账单状态
  updateBillStatus(billId) {
    // 后端按你的库字段命名：payment_status(0未缴、1已缴)。这里置为1
    return http.put('bilManagement/bilManagement', {
      id: billId,
      paymentStatus: 1
    });
  },

  // 调用接口修改停车订单缴费状态（保留原逻辑）
  updatePaymentStatus(orderId) {
    console.log('开始修改缴费状态，订单ID:', orderId);
    return http.put('parkingPay/parkingPay', {
      id: orderId,
      paymentStatus: 0  // 设置为已缴费状态
    })
    .then(res => {
      console.log('修改缴费状态接口响应:', res);
      return res;
    })
    .catch(err => {
      console.error('修改缴费状态失败:', err);
      throw new Error(`修改缴费状态失败: ${err.message || '未知错误'}`);
    });
  },

  // 调用接口修改月卡支付状态
  updateMonthlyCardPaymentStatus(orderId) {
    console.log('开始修改月卡支付状态，订单ID:', orderId);
    
    return http.put('monthlyCard/updatePaymentStatus', {
      id: orderId,
      paymentStatus: 1  // 设置为已支付状态
    })
    .then(res => {
      console.log('修改月卡支付状态接口响应:', res);
      console.log('月卡支付状态修改成功');
      return res;
    })
    .catch(err => {
      console.error('修改月卡支付状态失败:', err);
      throw new Error(`修改月卡支付状态失败: ${err.message || '未知错误'}`);
    });
  },
  // 删除密码
  onDelete() {
    if (this.data.passwordArr.length > 0) {
      this.data.passwordArr.pop();
      this.setData({ passwordArr: this.data.passwordArr });
    }
  },

  // 切换支付方式（示例）
  onChangePayWay() {
    wx.showActionSheet({
      itemList: ['余额', '银行卡', '微信支付'],
      success: (res) => {
        this.setData({ payWay: ['余额', '银行卡', '微信支付'][res.tapIndex] });
      }
    });
  },

  // 关闭弹窗
  onClose() { wx.navigateBack(); },
  onMaskTap() { this.onClose(); },
  preventTap() {}
})